package cn.supermarket.mapper;


import cn.supermarket.pojo.entity.Retail;
import cn.supermarket.pojo.vo.RetailDetailVO;
import cn.supermarket.pojo.vo.RetailPlainVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import javax.xml.crypto.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Repository
public interface RetailMapper {
    /**
     * 添加销售订单
     *
     * @param retail 销售订单属性
     * @return 成功的行数
     */
    int addNewRetail(Retail retail);

    /**
     * 根据id修改备注
     *
     * @param id    零售id
     * @param other 商品备注
     * @return 返回受影响的行数
     */
    int updateByOther(@Param("id") Long id, @Param("other") String other);


    /**
     * 根据id修改是否可见
     *
     * @param id    零售id
     * @param isDisplay 商品是否可见,0是可见,1是不可见
     * @return 返回受影响的行数
     */
    int updateByIsDisplay(@Param("id") Long id, @Param("isDisplay") Integer isDisplay);

    /**
     * 根据id修改是作废
     *
     * @param id    零售id
     * @return 返回受影响的行数
     */
    int updateByIsCancel(Long id);
    /**
     * 根据id修改最后操作时间
     *
     * @param id    零售id
     * @param lastUpdateTime 最后修改时间
     * @return 返回受影响的行数
     */
    int updateByLastUpdateTime(@Param("id") Long id, @Param("lastUpdateTime") LocalDateTime lastUpdateTime);
    /**
     * 根据id修改是否启用
     *
     * @param id    零售id
     * @param isEnable 是否启用
     * @return 返回受影响的行数
     */
    int updateByIsEnable(@Param("id") Long id, @Param("isEnable") Integer isEnable);
    /**
     * 根据id查询
     * @param id 商品id
     * @return 简单的零售信息
     */
    RetailPlainVO getById(@Param("id") Long id);

    /**
     * 根据单号查询商品信息
     * @param orderNumber 商品单号
     * @return 返回商品详细信息
     */
    List<RetailDetailVO> getByOrderNumber(String orderNumber);

    /**
     * 根据日期查询商品信息
     * @return 返回商品的详细信息
     */
    List<RetailDetailVO> getByData(LocalDateTime start, LocalDateTime end);

    /**
     * 根据金额范围查询范围
     * @param initialAmount 起始范围
     * @param finish 结束范围
     * @return 返回商品详细信息
     */
    List<RetailDetailVO> getByPaymentAmount(BigDecimal initialAmount, BigDecimal finish);

    /**
     * 根据id修改审批人
     * @param handler 审批人
     * @param id id
     * @return
     */
    int updateByHandler(String handler,Long id);
}
